'use strict';

class BaseModel {
  constructor(msg, data, code) {
   if (typeof msg === 'object') {
       this.code = data;
       this.data = msg;
       msg = null;
       data = null;
   }
   if (msg) {
    this.msg = msg;
   }
   if (data) {
    this.data = data;
   }
   if (code) {
    this.code = code;
   }
  }
}

class SussessModel extends BaseModel {
   constructor(msg, data, code) {
     super(msg, data, code)
     this.code = code || 1
   }
}

class FailModel extends BaseModel {
    constructor(msg, data, code) {
      super(msg, data, code)
      this.code = code || -1;
    }
 }

module.exports = {
    SussessModel,
    FailModel
}

// const success = new SussessModel('success', { name: 'de'}, 200)
// console.log('success:', success)
// module.exports = {
//     error: (msg, code, cb) => {
//         if (typeof msg === 'string') {
//             msg = {msg, code};
//         }
//         let error =new Error(JSON.stringify(msg) || 'server error!!!');
//         error.code = code || 401;
//         return cb(error);
//     },
//     resultError: (msg, code, res) => {
//         res.status(200).json({code, msg});
//     },
//     result: (code, msg, data, cb) => {
//         res.result = {
//             msg, code, data
//         }
//         cb();
//     },
// }
